#ifndef __ENTITY_H__
#define __ENTITY_H__

#include <vector>
#include "../Core/Resource/ResourceManagement.h"
#include "../Core/Resource/TextureEx.h"
#include "../Core/Resource/Mesh.h"
#include "../Header/Header.h"
#include "Texture.h"
#include "Model.h"
#include "Shader.h"


class Entity
{
protected:
	TextureEx* m_Texture;
	Mesh* m_Mesh;
	Model* m_Model;
	Shader* m_Shader;
	std::vector<Entity*> m_Childs;
	__UINT32 m_iChilds;
	Matrix m_maLocalW;
	Vector3 m_v3Scale, m_v3Rotate, m_v3Translate;
public:
	Entity();
	virtual ~Entity();
	virtual __INT32 Init(char* strFileModel = 0, char** strFileTextures = 0, __UINT32 iTextures = 0) = 0;
	virtual __INT32 SetShader(char* strFileVS, char* strFileFS);
	virtual __VOID Update(__FLOAT deltaTime);
	virtual __VOID Draw() = 0;
};

#endif